home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE09 / CODERS / KEYDEFS.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-04  |  3KB  |  102 lines

  1. unit KeyDefs ;
  2. (*****) interface (*******************************)
  3. uses
  4.   WinTypes ;
  5.  
  6. const
  7.   MaxKeys = 41 ;
  8.   MaxTokLen = 9 ;
  9.   ControlKey = '^' ;
  10.   AltKey     = '%' ;
  11.   ShiftKey   = '+' ;
  12.   KeyGroupOpen  = '{' ;
  13.   KeyGroupClose = '}' ;
  14.  
  15. type
  16.   TKeyString = string[MaxTokLen] ;
  17.  
  18.   TKeyDef = record
  19.     Key : TKeyString ;
  20.     vkCode : byte ;
  21.   end (* record TKeyDef *) ;
  22.  
  23.   (* SendKeys error codes *)
  24.   TSendKeyError = ( sk_None, sk_FailSetHook, sk_InvalidToken, sk_UnknownError ) ;
  25.  
  26. const
  27.   KeyDefArray : array [1..MaxKeys] of TKeyDef =
  28.   (
  29.     (* provide "Metacodes" so that special keys may be included in strings *)
  30.     ( Key : '+' ;         vkCode : Ord( ShiftKey )),
  31.     ( Key : '^' ;         vkCode : Ord( ControlKey )),
  32.     ( Key : '%' ;         vkCode : Ord( AltKey )),
  33.     ( Key : '{' ;         vkCode : Ord( KeyGroupOpen )),
  34.     ( Key : '}' ;         vkCode : Ord( KeyGroupClose )),
  35.     ( Key : 'F1' ;        vkCode : vk_F1 ),
  36.     ( Key : 'F2' ;        vkCode : vk_F2 ),
  37.     ( Key : 'F3' ;        vkCode : vk_F3 ),
  38.     ( Key : 'F4' ;        vkCode : vk_F4 ),
  39.     ( Key : 'F5' ;        vkCode : vk_F5 ),
  40.     ( Key : 'F6' ;        vkCode : vk_F6 ),
  41.     ( Key : 'F7' ;        vkCode : vk_F7 ),
  42.     ( Key : 'F8' ;        vkCode : vk_F8 ),
  43.     ( Key : 'F9' ;        vkCode : vk_F9 ),
  44.     ( Key : 'F10' ;       vkCode : vk_F10 ),
  45.     ( Key : 'F11' ;       vkCode : vk_F11 ),
  46.     ( Key : 'F12' ;       vkCode : vk_F12 ),
  47.     ( Key : 'INSERT' ;    vkCode : vk_Insert ),
  48.     ( Key : 'INS' ;       vkCode : vk_Insert ),
  49.     ( Key : 'DELETE' ;    vkCode : vk_Delete ),
  50.     ( Key : 'HOME' ;      vkCode : vk_Home ),
  51.     ( Key : 'END' ;       vkCode : vk_End ),
  52.     ( Key : 'PGUP' ;      vkCode : vk_Prior ),
  53.     ( Key : 'PGDN' ;      vkCode : vk_Next ),
  54.     ( Key : 'LEFT' ;      vkCode : vk_Left ),
  55.     ( Key : 'RIGHT' ;     vkCode : vk_Right ),
  56.     ( Key : 'UP' ;        vkCode : vk_Up ),
  57.     ( Key : 'DOWN' ;      vkCode : vk_Down ),
  58.     ( Key : 'TAB' ;       vkCode : vk_Tab ),
  59.     ( Key : 'ENTER' ;     vkCode : vk_Return ),
  60.     ( Key : 'RETURN' ;    vkCode : vk_Return ),
  61.     ( Key : 'SPACE' ;     vkCode : vk_Space ),
  62.     ( Key : 'BKSP' ;      vkCode : vk_Back ),
  63.     ( Key : 'BS' ;        vkCode : vk_Back ),
  64.     ( Key : 'BACKSPACE' ; vkCode : vk_Back ),
  65.     ( Key : 'PRTSC' ;     VkCode : vk_SnapShot ),
  66.     ( Key : 'SHIFT' ;     vkCode : vk_Shift ),
  67.     ( Key : 'ESCAPE' ;    vkCode : vk_Escape ),
  68.     ( Key : 'ESC' ;       vkCode : vk_Escape ),
  69.     ( Key : 'CAPSLOCK' ;  vkCode : vk_Return ),
  70.     ( Key : 'NUMLOCK' ;   vkCode : vk_Return )
  71.   ) ;
  72.  
  73. function FindKeyInArray( Key : TKeyString ; var Code : byte ) : boolean ;
  74.  
  75. (*****) implementation (**************************)
  76. uses
  77.   SysUtils ;
  78.  
  79. function FindKeyInArray( Key : TKeyString ; var Code : byte ) : boolean ;
  80. var
  81.   i : word ;
  82. begin
  83.   Result := FALSE ;
  84.   for i := Low( KeyDefArray ) to High( KeyDefArray ) do
  85.     if UpperCase( Key ) = KeyDefArray[i].Key then
  86.     begin
  87.       Code := KeyDefArray[i].vkCode ;
  88.       Result := TRUE ;
  89.       Break ;
  90.     end ;
  91. end ;
  92.  
  93. {$ifdef VER80}
  94. initialization
  95. {$else}
  96. begin
  97. {$endif}
  98.     (* unit KeyDefs -- initialization code *)
  99.   (* NONE *)
  100. end (* unit KeyDefs -- initialization code *) .
  101.  
  102.